export interface BaseFieldListItem {
  prop: string
  label: string
  labelWidth?: string | number
  rules?: any
  renderDefault?: (...args: any) => any
  renderLabel?: (...args: any) => any
  renderError?: (...args: any) => any
  attrs?: Record<string, any>
}

export interface SelectFieldListItem extends BaseFieldListItem {
  type: 'select' | 'radio'
  options: Array<{ label: string; value: any }>
}

export interface DefaultFieldListItem extends BaseFieldListItem {
  type?: 'input' | 'date' | 'checkbox'
  options?: Array<{ label: string; value: any }>
}

export type FieldType = 'select' | 'radio' | 'input' | 'date' | 'checkbox'

export type FieldListItem = SelectFieldListItem | DefaultFieldListItem
